#include <math.h>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <string.h>

#define VERSAO	"1.0A"
#define DATA	"Outubro/99"

#define NORMAL
//#define INVERSO

#define PORTUGUES
//#define INGLES

#include "integrat.h"
#include "sistema.h"
#include "general.h"
#include "fmmt.h"
#include "miscfunc.h"
#include "messages.h"

sistema ms;
fmmt estator,rotor,resul;
//ranhuras est, rot;
//grafico grafp, grafq, grafs, grafe, grafpt;
//grafico grafwr, grafi, grafcosfi, grafdelta;
matmem m;

long int cmd_steppsim=STEPS_PER_SIM;
double cmd_simtstep=SIM_TSTEP;

FILE *newstdout,*newstderr;
struct tm *tempo;
time_t relogio;

int main(int argc, char** argv)
{
	int i;
	double pi;
	pi=4*(float)atan(1);

	newstdout=freopen("Output.txt","w",stdout);
	newstderr=freopen("Error.txt","w",stderr);

	time( &relogio );                 // time in seconds
	tempo = localtime( &relogio );	  // convert to struct tm

	printf(MSG01);
	printf(MSG02,asctime(tempo));
	printf(MSG03);
	printf(MSG04);
	for(i=0;i<argc;i++)
		printf(MSG05,argv[i]);
	printf(MSG06);
	
	printf(MSG07);
	m.init();
		
	printf(MSG08);
	ms.setA(300);
	ms.setD((float)0.08);
	ms.setIEXC(IEXC_NOM);
	ms.setV(3688);
	ms.setWS(2*pi*60);
	ms.setPT(PT_NOM);
	ms.setXS((float)1.105);
	ms.setH(2);
	
	printf(MSG09);
	ms.setRPS();

	printf(MSG10);
	if(argc>1)
		if(atof(argv[1])>0 && atof(argv[1])<0.0001) 
		{
			cmd_steppsim=atof(argv[1]);
			printf(MSG11,cmd_steppsim);
		}
		
	printf(MSG12);
	if(argc>2)
	{
		if(atof(argv[2])>0 && atof(argv[2])<0.0001) cmd_simtstep=atof(argv[2]);
		printf(MSG13,cmd_simtstep);
	}
	ms.setTSTEP((float)cmd_simtstep);
	
	printf(MSG14);
	ms.init(0);

	printf(MSG15);
	
	printf(MSG16);
    /*
	grafi.settitle(MSG17);
	grafi.setxaxisname(MSG18);
	grafi.setyaxisname(MSG19);
	grafi.setxaxislimit(10,0);
	grafi.setyaxislimit(7000,0);
	grafi.setyaxisstep(1000);
	grafi.setpoints(300);
	grafi.init();
	grafi.ciclo=false;
	*/
	printf(MSG20);
    /*
	grafdelta.settitle(MSG21);
	grafdelta.setxaxisname(MSG22);
	grafdelta.setyaxisname(MSG23);
	grafdelta.setxaxislimit(10,0);
	grafdelta.setyaxislimit(120,-10);
	grafdelta.setyaxisstep(10);
	grafdelta.setpoints(300);
	grafdelta.init();
	grafdelta.ciclo=false;
    */
	printf(MSG24);
    /*
	grafcosfi.settitle(MSG25);
	grafcosfi.setxaxisname(MSG26);
	grafcosfi.setyaxisname(MSG27);
	grafcosfi.setxaxislimit(10,0);
	grafcosfi.setyaxislimit(1.1,-0.1);
	grafcosfi.setyaxisstep(0.1);
	grafcosfi.setpoints(300);
	grafcosfi.init();
	grafcosfi.ciclo=false;
    */
	printf(MSG28);
    /*
	grafwr.settitle(MSG29);
	grafwr.setxaxisname(MSG30);
	grafwr.setyaxisname(MSG31);
	grafwr.setxaxislimit(10,0);
	grafwr.setyaxislimit(4800,2400);
	grafwr.setyaxisstep(400);
	grafwr.setpoints(300);
	grafwr.init();
	grafwr.ciclo=false;
    */
	printf(MSG32);
    /*
	grafpt.settitle(MSG33);
	grafpt.setxaxisname(MSG34);
	grafpt.setyaxisname(MSG35);
	grafpt.setxaxislimit(10,0);
	grafpt.setyaxislimit(5,-1);
	grafpt.setyaxisstep(1);
	grafpt.setpoints(300);
	grafpt.init();
	grafpt.ciclo=false;
    */
	printf(MSG36);
    /*
	grafe.settitle(MSG37);
	grafe.setxaxisname(MSG38);
	grafe.setyaxisname(MSG39);
	grafe.setxaxislimit(10,0);
	grafe.setyaxislimit(7000,0);
	grafe.setyaxisstep(1000);
	grafe.setpoints(300);
	grafe.init();
	grafe.ciclo=false;
    */
	printf(MSG40);
    /*
	grafp.settitle(MSG41);
	grafp.setxaxisname(MSG42);
	grafp.setyaxisname(MSG43);
	grafp.setxaxislimit(10,0);
	grafp.setyaxislimit(5,-1);
	grafp.setyaxisstep(1);
	grafp.setpoints(300);
	grafp.init();
	grafp.ciclo=false;
    */
	printf(MSG44);
    /*
	grafq.settitle(MSG45);
	grafq.setxaxisname(MSG46);
	grafq.setyaxisname(MSG47);
	grafq.setxaxislimit(10,0);
	grafq.setyaxislimit(5,-5);
	grafq.setyaxisstep(1);
	grafq.setpoints(300);
	grafq.init();
	grafq.ciclo=false;
    */
	printf(MSG48);
    /*
	grafs.settitle(MSG49);
	grafs.setxaxisname(MSG50);
	grafs.setyaxisname(MSG51);
	grafs.setxaxislimit(10,0);
	grafs.setyaxislimit(5,-1);
	grafs.setyaxisstep(1);
	grafs.setpoints(300);
	grafs.init();
	grafs.ciclo=false;
	*/
	printf(MSG52);
	printf(MSG53);
	estator.init();
	printf(MSG54);
	rotor.init();
	printf(MSG55);
	resul.init();
	printf(MSG56);
	
	printf(MSG57);
	
	printf(MSG58);
	printf(MSG59);
	//interfaceCreate(argc, argv);

	printf(MSG60);
    return 0;
}	
	
